package com.eastfair.auth.vo;

import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.auth.enumeration.OrganizationOrgTypeEnum;
import com.eastfair.projectcore.vo.FunctionVO;
import com.eastfair.projectcore.vo.MenuVO;
import com.eastfair.vo.VoGroupClass;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 实体类
 * 
 * </p>
 *
 * @author ligang
 * @since 2021-07-16
 */
@Data
@ApiModel(value = "OrganizationVo", description = "")
public class OrganizationVo implements Serializable{
    private static final long serialVersionUID = 1L;



    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long id;

    /**
     * 组织名称
     */
    @ApiModelProperty(value = "组织名称")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String name;

    /**
     * 组织类型 #{project_name:项目名称;p_company_classify:公司分类;p_sponsor_classify:主办分类;AUDIENCE_CLASSIFY:观众分类;company:公司;sponsor:主办;admin:管理员;staff:员工;other:其他}
     */
    @ApiModelProperty(value = "组织类型 #{project_name:项目名称;p_company_classify:公司分类;p_sponsor_classify:主办分类;AUDIENCE_CLASSIFY:观众分类;company:公司;sponsor:主办;admin:管理员;staff:员工;other:其他}")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private OrganizationOrgTypeEnum orgType;
    /**
     * 组织code码
     */
    @ApiModelProperty(value = "组织code码")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.findAllOrganization.class})
    private String code;

    /**
     * 项目id（分库分表用）
     */
    @ApiModelProperty(value = "项目id（分库分表用）")
    @JsonInclude(JsonInclude.Include.NON_NULL)
//    @VoInfo(groups = {VoGroupClass.all.class})
    private Long projectId;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer sort;

    /**
     * 父级id
     */
    @ApiModelProperty(value = "父级id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long parentId;


    /**
     * 子节点信息
     */
    @ApiModelProperty(value = "子节点信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<OrganizationVo> childVoList;

    /**
     * 资源信息
     */
    @ApiModelProperty(value = "资源信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<ResourceOrganizationVo> resourceOrganizationVo;

    /**
     * 用户信息
     */
    @ApiModelProperty(value = "用户信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<UserOrganizationVo> userOrganizationVoList;

    /**
     * 角色信息
     */
    @ApiModelProperty(value = "角色信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.findAllOrganization.class})
    private List<RoleVo> roleVoList;


    /**
     * 角色id集合
     */
    @ApiModelProperty(value = "角色id集合")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.findAllOrganization.class})
    private List<Long> roleIds;
    /**
     * 菜单信息
     */
    @ApiModelProperty(value = "菜单信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<MenuVO> menuVOList;

    /**
     * 事件信息
     */
    @ApiModelProperty(value = "事件信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<FunctionVO> functionVOList;
}
